Nested Queries ArangoDB তে এমন কোয়েরি যেখানে একটি কোয়েরির ভেতরে আরেকটি কোয়েরি ব্যবহার করা হয়। এটি জটিল ডেটা বিশ্লেষণ এবং সম্পর্কিত ডেটার কার্যকর অনুসন্ধানের জন্য ব্যবহৃত হয়। AQL এ Nested Queries ব্যবহার করে সহজে সাব-কোয়েরি তৈরি করা সম্ভব।
Nested Query এর মূল ধারণা
- একটি কোয়েরির ভেতরে অন্য একটি কোয়েরি ব্যবহার করে ডেটা সংগ্রহ করা।
- সাব-কোয়েরির ফলাফলকে মেইন কোয়েরিতে ডেটা হিসেবে ব্যবহার করা হয়।
- এটি JOIN, ফিল্টারিং, এবং সাব-গ্রুপিং অপারেশন পরিচালনার জন্য কার্যকর।
Nested Query উদাহরণ
১. সাব-কোয়েরি ব্যবহার করে ফিল্টারিং
FOR doc IN employees
FILTER doc.salary > (
FOR avgSalary IN employees
COLLECT AGGREGATE avgSalary = AVG(avgSalary.salary)
RETURN avgSalary
)[0]
RETURN doc
বর্ণনা:
- সাব-কোয়েরি
employeesটেবিলের গড় বেতন (AVG) বের করে। - মেইন কোয়েরি সেই সকল এমপ্লয়িদের ডেটা ফেরত দেয়, যাদের বেতন গড় বেতনের বেশি।
২. সাব-কোয়েরি দিয়ে গ্রুপিং এবং গণনা
FOR department IN departments
LET employeeCount = (
FOR emp IN employees
FILTER emp.departmentId == department._key
COLLECT WITH COUNT INTO count
RETURN count
)[0]
RETURN { department: department.name, totalEmployees: employeeCount }
বর্ণনা:
- সাব-কোয়েরি প্রতিটি ডিপার্টমেন্টের জন্য কর্মচারীদের সংখ্যা গণনা করে।
- মেইন কোয়েরি ডিপার্টমেন্টের নাম এবং কর্মচারীর সংখ্যা রিটার্ন করে।
৩. Edge এবং Vertex এর Nested Query
FOR v IN vertices
LET relatedEdges = (
FOR e IN edges
FILTER e._from == v._id
RETURN e
)
RETURN { vertex: v, edges: relatedEdges }
বর্ণনা:
- সাব-কোয়েরি একটি Vertex এর সাথে সম্পর্কিত সকল Edge সংগ্রহ করে।
- মেইন কোয়েরি Vertex এবং তার সম্পর্কিত Edge রিটার্ন করে।
৪. সাব-কোয়েরি থেকে একাধিক মান সংগ্রহ
FOR product IN products
LET totalSales = (
FOR order IN orders
FILTER order.productId == product._key
COLLECT AGGREGATE total = SUM(order.quantity)
RETURN total
)[0]
RETURN { productName: product.name, totalSales: totalSales }
বর্ণনা:
- সাব-কোয়েরি একটি প্রোডাক্টের জন্য সব অর্ডারের পরিমাণ যোগ করে।
- মেইন কোয়েরি প্রোডাক্টের নাম এবং মোট বিক্রয় রিটার্ন করে।
Nested Query ব্যবহারের ক্ষেত্রে বিশেষ নির্দেশনা
- পারফরম্যান্স: Nested Queries জটিল হলে কোয়েরি সময় বেশি লাগতে পারে।
- ইনডেক্সিং: Nested Query অপ্টিমাইজ করতে রিলেভেন্ট ফিল্ডে ইনডেক্স ব্যবহার করুন।
- সাব-কোয়েরি সীমাবদ্ধতা: সাব-কোয়েরি সরাসরি পুরো টেবিলে কাজ করে, তাই সাব-কোয়েরির ফলাফল ছোট রাখতে ফিল্টার ব্যবহার করুন।
Nested Query এর ব্যবহার ক্ষেত্র
- জটিল সম্পর্ক বিশ্লেষণ।
- গ্রুপিং এবং সাব-গ্রুপিং।
- একাধিক স্তরের ডেটা ফিল্টারিং।
- Edge এবং Vertex সম্পর্ক পরিচালনা।
সারাংশ
ArangoDB তে Nested Query ব্যবহার করে জটিল ডেটা বিশ্লেষণ এবং সম্পর্কযুক্ত ডেটা মডেল পরিচালনা সহজ হয়। সাব-কোয়েরি ডেটা ফিল্টারিং, গ্রুপিং, এবং গণনার জন্য কার্যকর হাতিয়ার। ডেটার গভীর বিশ্লেষণ প্রয়োজন হলে Nested Queries একটি অপরিহার্য টুল।
Content added By